<?php
/**************************************************导航模块***************************************************/
/**
 * 添加一个导航至数据库
 * @version 1.6.0 首次引入
 * @param array $data 必需;普通表单数组形式;默认：空
 * @return mixed $mixed 自增ID
 */
function DcNavSave($data=[]){
    return model('navs/Db','loglic')->save($data);
}
/**
 * 批量添加导航至数据库
 * @version 1.6.0 首次引入
 * @param array $data 必需;二维数组;默认：空
 * @return obj $obj 多条数据集
 */
function DcNavSaveAll($data=[]){
    return model('navs/Db','loglic')->save_all($data);
}
/**
 * 按条件删除导航
 * @version 1.6.0 首次引入
 * @param array $args 必需;查询条件数组格式 {
 *     @type string $status 可选;显示状态（normal|hidden）;默认：空
 *     @type string $module 可选;模型名称;默认：空
 *     @type string $controll 可选;控制器名称;默认：空
 *     @type string $action 可选;操作名称;默认：空
 *     @type int $id 可选;配置ID;默认：空
 *     @type string $name 可选;配置名称;默认：空
 *     @type array $where 可选;自定义高级查询条件;默认：空
 * }
 * @return mixed $mixed 查询结果（array|null）
 */
function DcNavDelete($args=[]){

    if(!$where = $args['where']){
        $where = DcWhereFilter($args, ['module','controll','action','status','id'], 'eq', 'op_');
    }

    return model('navs/Db','loglic')->delete($where);
}
/**
 * 按ID条件删除动态配置
 * @version 1.6.0 首次引入
 * @param mixed $value 必需;Id值/多个用逗号分隔或者数组(string|array)；默认：空
 * @return mixed $mixed 删除结果(obj|null)
 */
function DcNavDeleteId($value=''){
    return model('navs/Db','loglic')->delete_id($value);
}
/**
 * 按条件修改导航
 * @version 1.6.0 首次引入
 * @param array $args 必需;查询条件数组格式 {
 *     @type string $module 可选;模型名称;默认：空
 *     @type string $controll 可选;控制器名称;默认：空
 *     @type string $action 可选;操作名称;默认：空
 *     @type int $id 可选;配置ID;默认：空
 *     @type string $name 可选;配置名称(site_rotue);默认：空
 *     @type array $where 可选;自定义高级查询条件;默认：空
 * }
 * @param array $data 必需;待修改的数据（普通表单数组形式）;默认：空
 * @return mixed $mixed 查询结果（array|null）
 */
function DcNavUpdate($args=[], $data=[]){
    if(!$where = $args['where']){
        $where = DcWhereFilter($args, ['module','controll','action','status','id','name'], 'eq', 'op_');
    }
    return model('navs/Db','loglic')->update($where, $data);
}
/**
 * 按Id修改一个导航
 * @param int $opId 必需;ID值;默认：空
 * @param array $data 必需;表单数据（一维数组）;默认：空 
 * @return mixed $mixed obj|null;不为空时返回obj
 */
function DcNavUpdateId($opId, $data){
    return model('navs/Db','loglic')->update_id($opId, $data);
}
/**
 * 按条件获取一个导航
 * @version 1.6.0 首次引入
 * @param array $args 必需;查询条件数组格式 {
 *     @type bool $cache 可选;是否缓存;默认：true
 *     @type string $status 可选;显示状态（normal|hidden）;默认：空
 *     @type string $module 可选;模型名称;默认：空
 *     @type string $controll 可选;控制器名称;默认：空
 *     @type string $action 可选;操作名称;默认：空
 *     @type int $id 可选;配置ID;默认：空
 *     @type string $name 可选;配置名称(site_rotue);默认：空
 *     @type array $where 可选;自定义高级查询条件;默认：空
 * }
 * @return mixed $mixed 查询结果（array|null）
 */
function DcNavFind($args=[]){
    $cache = DcBool($args['cache'], true);
    if(!$where = $args['where']){
        $where = DcWhereFilter($args, ['module','controll','action','status','id','name'], 'eq', 'op_');
    }
    return model('navs/Db','loglic')->get($where, $cache);
}
/**
 * 获取网站导航列表
 * @version 1.6.0 首次引入
 * @param array $args 必需;查询条件数组格式 {
 *     @type string $field 可选;查询字段;默认：*
 *     @type bool $cache 可选;是否缓存;默认：true
 *     @type bool $tree 可选;是否转化为树型;默认：false
 *     @type bool $level 可选;是否将树型还原为层级结构;默认：false
 *     @type int $limit 可选;分页大小;默认：0
 *     @type int $page 可选;当前分页;默认：0
 *     @type string $id 可选;排序字段名;默认：op_order
 *     @type string $sort 可选;排序字段名;默认：op_order
 *     @type string $order 可选;排序方式(asc|desc);默认：asc
 *     @type string $status 可选;显示状态（normal|hidden）;默认：空
 *     @type string $module 可选;模型名称;默认：空
 *     @type string $controll 可选;控制器名称;默认：空
 *     @type string $action 可选;操作名称;默认：空
 *     @type array $where 可选;自定义高级查询条件;默认：空
 *     @type array $paginate 可选;自定义高级分页参数;默认：空
 * }
 * @return mixed $mixed obj|null 查询结果
 */
function DcNavSelect($args=[]){
    $defaults = array();
    //默认参数转查询条件
    $defaults['where'] = DcWhereFilter($args, ['id','status','module','controll','action'], 'eq', 'op_');
    //关键字参数转查询条件
    if( $args['search'] ){
        $defaults['where'] = DcArrayArgs(['op_value'=>['like','%'.$args['search'].'%']], $defaults['where']);
        unset($args['search']);
    }
    //自定义查询条件
    if( isset($args['where']) ){
        $defaults['where'] = DcArrayArgs($args['where'], $defaults['where']);
        unset($args['where']);
    }
    //自定义分页参数
    if(!$args['paginate']){
        $defaults['paginate'] = DcPageFilter($args);
    }
    return model('navs/Db','loglic')->all( DcArrayArgs($args, $defaults) );
}
/**
 * 获取导航列表简单数组格式用于
 * @version 1.3.0 首次引入
 * @param array $args 可选;array;查询条件，其属性值如下 {
 *     @type array $where 可选;where查询条件;默认：空
 *     @type bool $cache 可选;是否缓存;默认：false
 * }
 * @return mixed $mixed null|array
 */
function DcNavOption($args=[]){
    $defaults = array();
    if(!$args['where']){
        $defaults['where'] = DcWhereQuery(['op_module','op_controll','op_action'],'eq');
    }
    $defaults['cache'] = false;
    $defaults['where']['op_status'] = ['eq','normal'];
    return model('navs/Db','loglic')->option( DcArrayArgs($args, $defaults) );
}